package com.hand.wfive.util

import android.app.ActivityManager
import android.content.Context
import android.util.Log
import com.hand.wfive.App


/**
 * @Auther: z
 * @datetime: 2024/4/24
 * @desc:
 */
object ActivityManagerUtil {

    /**
     * （==这个方法获取的内存作为压缩依据也行不通，但是也没有想到更好替代办法了）
     * 返回当前设备的每个应用程序内存类的近似值,
     * activityManger.memoryClass以兆字(MB)节为单位
     * @return 字节数
     */
    fun getMemorySize(): Long {
        val activityManger = App.getContext()?.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
        var maxMemory = activityManger.memoryClass
        if (activityManger.memoryClass > 16) { //系统为应用分配的内存，有的设备返回24或更高数字
            maxMemory = 16
        }
        val memoryB = (maxMemory * 1024 * 1024L * 0.3).toLong() //0.3是根据实际测试情况调整的==
        Log.d("testXX", "---------memoryB:$memoryB")
        return memoryB
    }

    /**
     * @return 当前系统的可用内存
     */
    fun getAvailableMemorySize(): Long {
        val activityManger = App.getContext()?.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
        val memoryInfo = ActivityManager.MemoryInfo()
        activityManger.getMemoryInfo(memoryInfo)

        val availableMemory = memoryInfo.availMem //
        Log.d("testXX", "---------availableMemory:$availableMemory bytes")
        return availableMemory
    }
}